In a typical computing environment, a graphics card or similar is responsible for transferring images onto a display device and for handling at least part of the processing of the images. For video images, a graphics overlay device and technique is often employed by the graphics card and the overall computing device. For example, to display video images from a DVD or Internet streaming source, a graphics overlay procedure is initiated to place and maintain the video images.
A graphics overlay procedure selects a rectangle and a key color for establishing the screen location at which the video image is to be displayed. The rectangle can be defined with a starting coordinate for a corner of the rectangle along with the desired height and width. The key color is usually a rarely seen color such as bright pink and is used to ensure that video is overlain within the defined rectangle only if the video is logically positioned at a topmost layer of a desktop on the display screen.
In operation, as the graphics card is providing pixel colors to a display device, it checks to determine if a given pixel location is within the selected graphics overlay rectangle. If not, the default image data is forwarded to the display device. If, on the other hand, the given pixel location is within the selected graphics overlay rectangle, the graphics card checks to determine whether the default image data at that pixel is equal to the selected key color. If not, the default image data is forwarded to the display device for the given pixel. If, on the other hand, the color of the given pixel is the selected key color, the graphics card forwards the video image data to the display device for that given pixel.
There are, unfortunately, several drawbacks to this graphics overlay technique. First, there is usually only sufficient hardware resources for a single graphics overlay procedure to be in effect at any one time. Regardless, reliance on the graphics overlay technique always results in constraints on the number of possible simultaneous video displays as limited by the hardware. Second, the pink or other key color sometimes becomes visible (i.e., is displayed on an associated display device) when the window containing the displayed video is moved vigorously around the desktop on the display screen.
Third, a print screen command does not function effectively inasmuch as the video image that is displayed on the display device is not captured by the print screen command. Instead, the key color is captured by the print screen command, so the printed (or copied and pasted) image includes a solid rectangle of the key color where the video is displayed on the display device.
Another technique for displaying video images entails using the host microprocessor to perform video adjustments prior to transferring the video image to the graphics processor for forwarding to the display device. There are also several drawbacks to this host processor technique. First, the host microprocessor and associated memory subsystem of a typical computing environment is not optimized for the processing of large video images. Consequently, the size and number of video images that can be displayed are severely restricted. Second, for the host microprocessor to work efficiently, the video image must reside in memory that is directly addressable by the host microprocessor. As a result, other types of hardware acceleration, such as decompression and/or de-interlacing, cannot be performed on the video image.
In short, previous techniques such as the graphics overlay procedure and reliance on the host processor result in visual artifacts, are too slow and/or use memory resources inefficiently, are hardware limited, constrain video presentation flexibility, and/or do not enable a fully-functional print screen command. Accordingly, there is a need for schemes and/or approaches for remedying these and other deficiencies by, inter alia, facilitating interaction between video renderers and graphics device drivers.